// // 导入 路由
// import router from './router'
// // 导入 状态 Vuex
// import store from './store'
// // 导入 Message 消息提示组件
// import { Message } from 'element-ui'

// // 导入进度条插件以及样式
// import NProgress from 'nprogress'
// import 'nprogress/nprogress.css'

// // 从 auth 模块中导入获取 token 的方法
// import { getToken } from '@/utils/auth' // get token from cookie

// // 这个模块主要作用就是用来获取【页面的标题】
// import getPageTitle from '@/utils/get-page-title'

// NProgress.configure({ showSpinner: false }) // NProgress Configuration

// // 白名单
// const whiteList = ['/login']

// // permission.js 作用：控制页面的访问权限 (路由前置守卫 + token)
// router.beforeEach(async(to, from, next) => {
//   // 显示进度条
//   NProgress.start()

//   // 获取标题，设置标题
//   document.title = getPageTitle(to.meta.title)

//   // 获取 token
//   const hasToken = getToken()

//   if (hasToken) {
//     if (to.path === '/login') {
//       // 存在 token, 表示用户已经登录了，用户又访问了 登录页面
//       // 直接跳转到主页
//       next({ path: '/' })
//       NProgress.done()
//     } else {
//       // 登录了，访问的不是主页，直接放行，让用户访问即可
//       // 只不过在跳转到对应的页面之前，先行获取用户的信息
//       const hasGetUserInfo = store.getters.name
//       if (hasGetUserInfo) {
//         next()
//       } else {
//         try {
//           // get user info
//           await store.dispatch('user/getInfo')

//           next()
//         } catch (error) {
//           // remove token and go to login page to re-login
//           await store.dispatch('user/resetToken')
//           Message.error(error || 'Has Error')
//           next(`/login?redirect=${to.path}`)
//           NProgress.done()
//         }
//       }
//     }
//   } else {
//     // 如过没有 token，判断用户访问的路由在不在白名单中，如果在，直接放行
//     if (whiteList.indexOf(to.path) !== -1) {
//       // in the free login whitelist, go directly
//       next()
//     } else {
//       // other pages that do not have permission to access are redirected to the login page.
//       next(`/login?redirect=${to.path}`)
//       NProgress.done()
//     }
//   }
// })

// router.afterEach(() => {
//   // finish progress bar
//   NProgress.done()
// })
